nlp相关

NLP相关

NLP相关

BoW模型

BoW模型忽略文本语法和语序等重要因素,把文本简单看作是若干词语的集合,词语之间都是相互独立的。
基于文本的BoW模型例子
两个简单文本:
John likes to watch movies,Mary likes too.
John also likes to watch football games.
构建词典:
{“John”: 1, “likes”: 2,”to”: 3, “watch”: 4, “movies”: 5,”also”: 6, “football”: 7, “games”: 8,”Mary”: 9, “too”: 10}
统计词频:
[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
[1, 1,1, 1, 0, 1, 1, 1, 0, 0]

word2vec

https://www.zhihu.com/question/44832436
https://zhuanlan.zhihu.com/p/28179546

Alt text

CBOW

Alt text

CBOW是一种根据上下文预测当前词语出现概率的模型,其学习目标是最大化对数似然

Alt text
输入层:上下文词向量
投影层:输入向量和均值
输出层:输出最大概率的w(t),可以看作是多分类问题。
对于多分类问题,Softmax显然是最常用的,但是由于他会对语料库的每一个词语计算一次输出概率并归一化,资源占用太大

Hierarchical Softmax

http://www.cnblogs.com/pinard/p/7243513.html
Hierarchical Softmax便是取代Softmax的基于树状结构的分类方法

Alt text
非子节点相当于一个神经元,二分类决策生成1或0,代表向下左转或者右转;每个叶子子节点代表一个词语,以01进行编码,并且其编码序列对应一个时间序列,计算条件概率p(w|Context(w))。
判断左右的方法为sigmoid函数:

Alt text
P(-)=1-P(+)
xw为当前向量,θ为逻辑回归的模型参数

seq2seq

y/article/details/53749693”>https://blog.csdn.net/jerry/article/details/53749693
基于编码器-解码器模型

Alt text
每一个timestep向模型添加一个单词,直至最后一个单词,然后输出句子最后的语义向量c(c=h(xt),xt为最后一个单词),由于RNN记录了前面的状态,所以理论上c包含了整个句子的信息。

Alt text

Alt text
f为RNNCell结构(LSTM、GRU),g一般为softmax结构。
Decoder输入启动信号y0,,然后根据h0,y0,c计算出y1的概率分布,依此类推,直至到结束的特殊标识(如END)

在不同论文中预测第t个timestep的输出的公式:

Alt text

Alt text
在传播过程中有可能会丢失一些信息,而公式一中在每一个时间步中都加入了c,一定程度上减少了因为丢失信息而带来的误差

Alt text
在翻译任务中,我们可以将待处理内容反向处理后再进行穿播,例如“abc”改为“cba”,经过这样的处理之后,效果提升很大,而且这样的处理能够很好的处理长句子

Attention Model

Alt text
在解码过程中,编码器的每一个隐藏状态都被作为输入进行预测,这样Encoder就能利用更多的信息表达句子
https://blog.csdn.net/malefactor/article/details/50550211

Tree-RNN

http://www.hankcs.com/nlp/cs224n-tree-recursive-neural-networks-and-constituency-parsing.html
TreeRNN递归神经网络可以把一个树/图结构信息编码为一个向量,也就是把信息映射到一个语义向量空间中。这个语义向量空间满足某类性质,比如语义相似的向量距离更近。如果两句话(尽管内容不同)它的意思是相似的,那么把它们分别编码后的两个向量的距离也相近;反之就远。如下图所示:

Alt text
C1和C2分别是表示两个子节点的向量,P是表示父节点的向量。子节点和父节点组成一个全连接神经网络,也就是子节点的每个神经元都和父节点的每个神经元两两相连。用矩阵W表示这些连接上的权重,它的维度将是d*2d,其中,d表示每个节点的维度。父节点的计算公式可以写成:
p=tanh(W[c1,c2]+b)
然后,把产生的父节点的向量和其他子节点的向量再次作为网络的输入,再次产生它们的父节点。最终,将得到根节点的向量,可以认为它是对整棵树的表示,这样就实现了把树映射为一个向量。

Alt text

Tree-CNN

https://blog.csdn.net/zixiximm/article/details/54380289
共用卷积池化后的特征,全连接层不同

大词表问题

大词表问题实际指的是softmax的计算难度。早期的MT系统会使用小词表,但这无法从根本上解决问题。令一种方法是使用hierarchical softmax,建立树形词表,但是过于复杂,让模型对树形结构敏感不是对词语敏感。
我们可以每次只在词表上的一个子集进行训练,因为40%的词只出现一次,把训练均分为很多分,每一份的稀有词可能不会在其他语料中出现,我们可以让用词相似的文章进入同一自己,这样每个子集的词表的大小就更小

Byte Pair Encoding

这种方法试图找出所有有意义的“词素”,具体方法即为在词频统计表中统计所有的ngram组合为更长的ngram

Hybrid NMT

Alt text
大部分情况下做词语级别的翻译,在需要的时候从字符级别翻译

Alt text
遇到未知单词时,在字符级别进行搜索

Alt text

ASR

end-to-end ASR
从音频到字符的概率模型p(Y|X):

Alt text

Connectionist Temporal Classification

Alt text
主体为一个双向RNN,上面一层是softmax
词表中有一个空格<b>,由于语音片段的随意性,导致一个字符c可能会存在在多个帧中,为了区分字符与字符的界限,所以引入空格,在解码过程中,需要限定字符只能转移到相同的字符或者空格

Alt text

Alt text
灰色代表无输出的概率
一些例子

Alt text
可以看到,输出基本正确,只是有一些单词的字母有一些问题,我们可以不在使用字符级别而是使用单词级别的词表,识别出可能的单词后,用语言模型挑选出最可能的句子

sequence to sequence speech recognition with attention

采用类似于NMT的encoding-decoding的结构,根据之前的y和输入的x预测出y。

Alt text

Listen Attend and Spell

简单有效的多标准分词

对于n种语言来说,需要n(n-1)对encoding-decoding来进行训练,类似的,针对n种分词标准,需要n个私有层,造成系统过度复杂,同时无法应对zero-shottranslation(缺乏两种语言之间的平行语料库)。
谷歌采用了不修改网络,而是在输入数据上做处理,只需要在输入数据中人工添加目标语种标识符,就可以把所有平行预料混合训练

Alt text
类似的,我们只需要在句子首位添加一组标识符,就可以将多标准平行语料库进行混合训练。具体做法是用一对闭合的<dataset> </dataset>将每个句子包裹起来

Alt text

自编码器

自编码器

自编码器是神经网络中的一种,经过训练后能尝试将输入复制到输出。自编码器有一个隐藏层h,可以产生编码表示输入。该网络可以看成两个部分:一个由函数h=f(X)表示的编码器和一个生成重构的r=g(h)的解码器组成,自编码器可以看作神经网络的一个特例,并采用相同的方法进行训练,不同于前馈网络,自编码器也可以采用再循环训练,

欠完备自编码器

通常我们希望通过自编码器的训练使h获得有用的特性
从自编码器获得有用特征的一种方法是限制h的维度比x小,这种编码维度比输入维度小的自编码器被称为欠完备自编码器。学习欠完备的表示将强制自编码器捕捉训练数据中最显著的特征
学习过程可以简化为最小化损失函数

Alt text
当解码器是线性的且L是均方误差,欠完备的自编码器会学习出与PCA相同的生成子空间。拥有非线性编码函数f和非线性解码函数g的自编码器能够学习出更强大的PCA非线性推广。如果编码器和解码器被赋予过大的容量,自编码器会复制任务而捕捉不到任何有关数据分布的有用信息,训练来执行的复制任务的自编码器可能无法学习到数据集的任何有用信息

正则自编码器

正则编码器使用的损失函数可以鼓励模型学习其他特性(除了将输入复制到输出),而不必限制使用浅层的编码器和解码器以及晓得编码维数来限制模型容量。这些特性包括稀疏表示、表示的小导数、对噪声或输入缺失的鲁棒性。
几乎任何带有潜变量并配有一个推断过程的生成模型,都可以看作是自编码器的一种特殊形式。

稀疏自编码器

系数自编码器在训练时结合编码层的稀疏惩罚和重构误差:

Alt text
通过稀疏惩罚使得权重不是对输入值进行简单的复制
稀疏自编码器一般用来学习特征,以便用于像分类这样的任务。稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单的充当恒等函数。
我们可以简单的把惩罚项当作前馈网络的正则项,这个网络的任务是将输入复制到输出,并尽可能的根据这些稀疏特征执行一些监督学习问题。正则化的最大似然对应对大化p(a|x),相当于最大化log(p(x|a))+log(p(a))。log(p(x|a))即为通常的数据似然项,参数的对数先验项log(p(a))代表了对a的偏好。
我们可以认为稀疏自编码器是对带有潜变量的生成模型的最大似然训练,而不是将稀疏惩罚视为复制任务的正则化。对数似然分解为:

Alt text
我们可以认为自编码器使用一个高似然值h估计近似总和,这个h是参数编码器的输出,而不是从最优化结果推断出最可能的h。我们根据选择的h,最大化如下:

Alt text

去噪自编码器

去噪编码器最小化:

Alt text
其中x1(f的参数)是被噪声损坏的x的副本,去噪编码器需要撤销这些损坏,而不只是简单的对输入的复制。

惩罚导数作为正则

另一正则化的自编码器的策略是使用一个类似稀疏自编码器的惩罚项

Alt text
这迫使模型在x变化小时目标也没有太大变化的函数,因为这个方法支队训练数据游泳,它迫使自编码器学习可以反映训练数据分布的特征
这种正则化的自编码器被称为收缩自编码器

表示能力、层的大小和深度

由于自编码器属于前馈网络,所以加深编码器会有很多优势。编码器和解码器都是一个前馈网络,这两个部分也能从深度结构中获得好处。
万能近似定理保证至少有一层且隐藏单元足够多的前馈网络能以任意精度模拟任意函数。这意味这具有单隐层的自编码器在数据域能表示近似任意数据的恒等函数,但是,从输入到编码的映射是浅层的,这意味着我们不能添加任意约束。

得分估计

得分匹配是最大似然的代替。它提供了概率分布的一致估计,促使模型在各个数据点x上获得与数据分布相同的得分,在这种情况下,得分是一个特定的梯度场:

Alt text
DAE的训练准则(条件高斯p(x|h))能让自编码器学到能估计数据分布得分的向量场(g(f(x))-x)

Alt text
对于连续的x,高斯损坏和重构分布的去噪准则得到的得分估计适用于一般编码器和解码器的参数化,这意味着一个使用平方误差估计

Alt text
的通用编码器-解码器架构可以用来训练估计得分

Alt text
一般情况下,不能保证重构函数g(f(x))减去输入x后对应某个函数的地图

使用自编码器学习流形

自编码器和很多其他机器算法一样,利用了数据集在一个低维流形或者一小组这样的流形的思想。其中一些机器学习算法仅能学习到在流形上表现良好但给定不在流形上的输出就会出现异常的函数
流形的一个重要特征是切平面的集合,d维流形上的一点x,切平面由能张成流形上允许变动的局部方向的d维基向量给出。这些局部方向决定了我们能如何微小的变动x而保持在流形上

Alt text
所有自编码器训练过程涉及两种推动力的初衷:
1、学习训练样本x的表示h使得x能通过解码器近似的从h恢复。
2、满足约束或正则惩罚
自编码器必须有能力表示重构训练实例所需的变化。如果改数据生成分布集中靠近一个低维流形,自编码器能隐式产生捕捉这个流形局部坐标系的表示:仅在x周围关于流形相切变化需要对应于h=f(X)的变化。因此,编码器学习从输入空间x到表示空间的映射,映射仅对沿着流形方向的变化敏感,并且对流形正交方向的变化不敏感。

Alt text
我们可以把自编码器和其他方法进行对比。学习表征流形最常见的是流形上(或附近)数据点的表示。对于特定实例,这样的表示也称为嵌入。它通常由一个低维向量给出,具有比这个流形的”外围“空间更少的维数。有些算法直接学习每个训练样本的嵌入,而其他算法学习更一般的映射,将周围空间(输入空间)的任何一点映射到它的嵌入。
流形学习大对数专注于试图捕捉到这些流形的无监督学习过程。最初的学习非线性流形的机器学习研究专注于最邻近图的非参数方法。该图每个样例对应一个节点,它的边连临近节点。这些方法将每个节点与张成实例和近邻之间的差向量变化方向的切平面相关联

Alt text
全局坐标系则可以通过优化或求解线性系统获得,下图展示了如何通过大量局部线性的类高斯平铺得到一个流形

Alt text
局部非参数方法应用于流形学习的根本困难:如果流形不是很光滑(有很多波峰波谷和曲则),为了覆盖其中每一个变化,需要大量的训练样本,导致没有能力泛化到没见过的变化

收缩自编码器

收缩自编码器在编码h=f(x)的基础上添加了显示正则项,鼓励f的导数尽可能小:

Alt text
去噪自编码器和收缩自编码器的联系:在小的高斯噪声限制下,重构函数将x映射到r=g(f(x))时,去噪重构误差和收缩惩罚项是等价的。去噪自编码器能抵挡小且有限的输入扰动,而收缩自编码器使特征提取函数能抵抗极小的输入扰动
收缩源于CAE弯曲空间的方式,由于CAE训练为抵抗输入扰动,鼓励将输入点邻域映射到输入点更小的邻域。这能将输入的邻域收缩到更小的邻域

预测稀疏分解

预测稀疏分解(PSD)是 稀疏编码和参数化自编码器的混合模型。模型由编码器f(x)和解码器g(x)组成,h由优化算法控制。优化过程最小化下面公式

Alt text

线性因子模型

线性因子模型

线性因子模型生成过程:
1、从分布中抽取可解释性因子
h~p(h)
其中p(h)是一个因子分布,满足Alt text。接下来在给定因子的情况下,我们对实值的可观察变量进行采样

Alt text
其中噪声通常是对角化的(在维度上独立的)且服从高斯分布。

Alt text

概率PCA和因子分析

在因子分析中,潜变量的先验是一个方差为单位矩阵的高斯分布

Alt text
同时,我们可以假定给定h的条件下xi是独立的。潜变量的作用是捕获不同观测变量xi之间的依赖关系。x服从多维正太分布,并满足

Alt text
对模型做出修改之后使方差相同后的条件分布

Alt text

Alt text

独立成分分析

独立成分分析是将观察到的信号分离成许多潜在信号,然后通过缩放和叠加恢复成观察数据,这些信号是独立的。
我们可以通过提前给出固定的潜在因子的先验p(h),然后用模型生成x=Wh,然后通过非线性变化确定p(x),最后通过如最大化似然等方法进行学习。
这种方法的目的是通过独立的p(h)尽可能恢复独立而接近的潜在因子。在改设置中,每个训练样本对应一个时刻,每个xi是一个传感器丢混合信号的观察值,并且每个hi是单个原始信号的估计
一些版本中的ICA是在x的生成中添加一个噪声,而非使用确定性的解码器。大多数方法不使用最大化似然,而是使h=W^-1x的元素彼此独立
ICA的所有变种都要求p(h)是非搞死的,因为如果是高斯的,W不能识别。
ICA也可以推广到非线性生成模型,我们使用非线性函数x来生成观察数据。ICA的另一种非线性拓展是非线性独立成分估计(NICE),这个方法堆叠了一些列可逆变换,特性是能高效计算,其特性是能高效计算每个变化的Jacobian行列式,NICE尝试将数据变换到具有因子的边缘分布空间。
ICA的另一个推广是通过鼓励组内统计依赖关系、抑制组间依赖关系来学习特征组。当相关单元的组被用来选为不重叠时,被称为独立子空间分析。我们可以通过向每个隐藏单元分配空间坐标,并且在空间上相邻的单元组形成一定重要程度的重叠,这种能鼓励相邻的单元学习类似的特征。当用于自然图像时,这种地质ICA可以学习Gabor滤波器,从而使相邻的特征具有相似的方向、位置或频率。在每个区域内出现类似Gabor函数的许多不同相位存在抵消作用,使得在小区域的池化产生了平移不变性

慢特征分析

慢特征分析是使用来自时间信号的信息学习不变特征的线性因子模型
慢特征分析的想法源于慢性原则,即与场景中其描述作用的单个度量相比,场景中的重要特征变换的相对缓慢,因此,我们可以以往将模型正则化,从而学习到随时间变化较缓慢的特征
我们可以在梯度下降训练的任何可微分模型中使用慢性原则,为了引入慢性原则,我们可以向代价函数中添加以下项

Alt text
其中x是确定慢性正则化强度的超参数项,t是样本时间序列的索引,f是需要正则化的特征提取器。L是测量f(x(t))和f(x(t+1))之间的距离损失函数。L通常为均方误差
SFA是在输入空间和特征空间之间定义了一个线性映射,但是没有定义特征空间的先验,因此没有在输入空间施加先验分布p(x)

Alt text
学习特征具有零均值的约束对于使问题具有唯一解是必要的;否则我们可以向所有特征值添加一个常熟,并获得具有相等慢度目标值的不同解。特征具有单位方差的约束对于防止所有特征趋近于0的病态解是必要的。与PCA类似,SFA特征是有序的,其学习第一特征是最慢的,要学习多个特征,我们还必须要添加约束

Alt text
这要求学习的特征必须彼此线性去相关,没有这个约束,所有学习到的特征将简单的捕获一个最慢的信号
SFA的一个主要优点是,即使在深度非线性条件下,它依然能够在理论上预测SFA学习哪些特征。为了做出理论预测,我们必须知道关于配置空间的环境动力。在潜在因子如何改变的情况下,我们能通过理论分析解出表达这些因子的最佳函数。在实践中,基于模拟数据的实验上,使用深度SFA似乎能恢复理论预测的函数。相比之下的其他算法中,代价函数高度依赖与特征像素值,使得难以确定模型将学习到什么特征。

稀疏编码

稀疏编码是一个线性因子模型,已作为一种无监督特征学习和特征提取机制得到广泛研究。严格来说,稀疏编码是该模型推断h值的模型,稀疏矩阵是指设计和学习模型的过程,但是这两个概念都可以用稀疏编码描述
稀疏编码使用线性解码器加上噪声的方式获得一个x的重构,稀疏编码模型通常假设线性因子有一个各向同性精度为B的高斯噪声

Alt text
分布p(h)通常选取为一个峰值很尖锐且接近0的分布

Alt text
使用最大似然的方法训练稀疏编码模型是不可行的,为了在给定情况下更好的重构数据,训练过程在编码数据和解码器之间交替进行
稀疏编码的编码器不是参数化的编码器,编码器是一个优化算法,我们寻找单个最可能的编码值

Alt text
与非参数编码器结合的稀疏编码方法原则上是可以比任何特点的参数化编码器更好的最小化重构误差和对数先验的组合。另一个优点是编码器没有泛化误差。参数化的编码器必须泛化学习如何将x映射到h,对于与训练误差差异很大的异常x,所学习的参数化编码可能无法找到对应精确重构或稀疏的编码h。
非参数编码器的主要缺点是给定x的情况下需要大量时间来计算h,因为非参数方法需要运行迭代算法。和其他线性因子模型一样,稀疏编码经常产生糟糕的样本,这是因为每个单独特征都可以很好的学习到,但是隐藏编码值的因子先验会导致模型包括每个生成样本中所有特征的随机子集

卷积网络

卷积网络

卷积

我们对初始的数据用n*n的卷积核进行处理,n通常为不小于3的奇数。那么我们为什么要采用卷积的方式对数据进行处理呢?传统的神经网络是全连接的,假设我们有m个输入和n个输出,我们则需要m*n个参数。假设我们减少连接数至k,那么网络只有k*n个输出

池化

卷积网络一般包含三级。
第一级:多个卷积的线性激活函数
第二级:非线性函数处理
第三级:池化

池化函数是指将一个区域的总体统计特征代表该区域的输出值。池化函数包括输出该区域最大自的最大池化,输出该区域平局值、L^2范数和基于像素值的加权平均值的池化函数。不管哪种池化函数,在输入量做少量平移时,池化能帮助输出值近似不变。

无限强的先验

先验被认为是强或弱取决于先验中概率密度的集中程度。我们把卷积网络比喻成全连接网络,其权重除了卷积核部分全为0,我们可以把卷积使用当作是对网络中一层参数引入了无限强的先验概率分布。
卷积和池化可能会导致欠拟合。卷积和池化只有当先验的假设和合理时才正确,如果一个项目过分依赖于单个像素点的信息,那么这将造成过拟合。另外的,我们比较卷积模型的统计学习表现是,我们只能以其他卷积模型作为比较对象。对于不是用卷积的神经网络,即使我们把图像中的像素点置换后依然可能进行学习。

神经网络中的卷积

通常情况下,我们所处理的数据都是多维的,例如cifar-10中的数据都是32x32x10的。因为图像是多通道的,那么与之对应的卷积核也应该是多通道的。

Alt text
这里的Z是输入数据V和对应卷积核K的矩阵运算求和得来。有时候我们需要通过跳过一些输入值来减小开销,这个值为步幅,取值通常为1、2。
我们发现,随着卷积的进行,我们的输出值的维度一直在减小。我们通过对输出数据进行0填充来保证维度的一致。如果不选择零填充,我们只能在维度越来越小的输出和较小的卷积核之间做出选择,这两种选择会限制神经网络的表示能力。
三种零填充设定:
有效卷积:无论什么情况下都不进行填充。
相同卷积:对消失的维度用零填充,保证数据的一致。输入像素靠近边缘的位置对结果产生的影响比靠近中间位置小,这会导致边缘位置的像素存在一定的欠表示。
全卷积:使用足够多的零填充让每个像素被访问k次,输出图像为m+k-1。
通常零填充最优数量在”有效卷积”和”相同卷积”之间
有时候,我们并非想要对整个网络进行卷积,而只是想对网络进行局部链接,这即为非共享卷积。这个多层感知机对应的领结矩阵相同,但权重是不一样的。
局部连接的线性部分:

Alt text
当我们知道同一个特征不会在整个空间上都出现时,局部连接是很有用的。我们将输入的l个通道分成i个输出通道,每个输出通道作为一个整体进行下一次运算。对少量通道的连接使用了更少的参数,降低储存的同时提高了统计效率,并且减少了前向和反向传播的计算量。这些方法并没有减少隐藏单元数目
平铺卷积:
我们采用一组核进行循环运算,且相邻子网络采用不同的核,就行局部连接一样,但是减少了许多的参数。

Alt text

R-CNN

步骤一:训练一个分类模型:

Alt text
步骤二:对该模型做fine-tuning
  • 将分类数从1000改为20
  • 去掉最后一个全连接层
  Alt text
步骤三:特征提取
提取图像所有的候选框
对于每一个区域,修正区域大小到适合CNN的输入,进行前向运算,将第五个池化层(对候选框提取到的特征)存入硬盘
步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别
每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative

Alt text
步骤五:使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。

Alt text

SPP NET

一般在CNN后连接全连接层,他们需要固定大小的输入,所以不得不对数据进行crop或warp,这会造成数据丢失或几何失真。
如下图所示,在卷积层和全连接层之间加入了SPP layer。此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。

Alt text
在R-CNN中,我们会先将resize统一到固定大小,然后作为CNN输入。SPP Net则先对整张图片进行卷积得到feature map,然后找到每个候选框zaifeature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层

Fast R-CNN

Fast R-CNN是在R-CNN 的基础上采用了SPP Net,即一个可以看作单层的sppnet网络层,名叫ROI Pooling,这个网络层可以把所有不同大小的输入映射到一个固定尺度的特征向量,之后通过正常的softmax进行计算。在Fast R-CNN中,作者吧bbox regression放入了神将网络内部,与region合并成了multi-task模型(多任务学习模型),这两个任务能够共享卷积特征。

R-CNN缺点:
每一个候选框都需要一次卷积,而在Fast R-CNN中,只需要将整张图片作为卷积层的输入,所有候选框共享参数

Faster R-CNN

Fast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时
解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。
做这样的任务的神经网络叫做Region Proposal Network(RPN)

具体做法:
将RPN放在最后一个卷积层后面
RPN训练得到候选框

Alt text
RPN简介:
  • 在feature map上滑动窗口
  • 建一个神经网络用于物体分类+框位置的回归
  • 滑动窗口的位置提供了物体的大体位置信息
  • 框的回归提供了框更精确的位置
  Alt text
一种网络,四个损失函数;
  • RPN calssification(anchor good.bad)
  • RPN regression(anchor->propoasal)
  • Fast R-CNN classification(over classes)
  • Fast R-CNN regression(proposal ->box)
  Alt text

Capsule:https://jinfagang.github.io/2017/11/03/Capsule%E4%B8%8B%E4%B8%80%E4%BB%A3CNN%E6%B7%B1%E5%85%A5%E6%8E%A2%E7%B4%A2/

结构化概率模型

结构化概率模型

使用图描述模型结构

有向模型

有向图模型是一种结构化的概率模型,也被称为信念网络或者贝叶斯网络。

Alt text
通常意义上说,对于每个变量都能取k个值的n个变量建模,基于建表的方法的复杂度为O(k^n),现在假设使用一个有向图模型进行建模,如果m代表图模型的单个条件概率分布的最大变量数目,那么有向模型建表复杂度为O(k^m),当m<<n时,复杂度大大减小。
只要图中每个变量有少量父节点,那么这个分布就可以用较少的参数表示。决定信息是否应该被包含在图中是重要的。如果变量之间被假设为条件独立,那么这个图可以包含这种简化假设。

无向模型

有向模型为我们提供了一种描述结构化概率的语言,而另一种常见的语言则是无向模型,也被称为马尔科夫随机场,或者是马尔科夫网络。
在有向模型中,经常存在在我们理解的具有因果关系以及因果关系有明确方向的情况,然而并不是所有情况都有明确的方向,当相互的作用没有本质性的指向,或者是明确的双向相互作用时,使用无向模型更加合适

Alt text

配分函数

Alt text
归一化函数z被称为配分函数。

Alt text

基于能量的模型

Alt text
E(x)被称为是能量函数。对于所有z,exp(z)都是正的,这保证了没有一个能量函数会使得某一种状态的x的概率为0。基于能量的模型中的概率可以无限趋近于0而永远达不到0
服从上式的任意分布都是玻尔兹曼分布的一个实例,我们把许多基于能量的模型称为玻尔兹曼机
无向模型的不同团对应能量函数的不同项,基于能量团的模型只是一种特殊的马尔科夫网络:求幂使能量函数中的每个项对应不同团的一个因子

Alt text

Alt text

分离和d-分离

在无向模型中,识别图中的条件独立性是简单的。在这种情况下,图中隐含的条件独立性称为分离。如果图结构给定变量集S时,变量集A与另一组变量集B是分离的,那么我们生成在给定变量集S时,变量集A与另一组变量集B是分离的。如果连接两个变量a、b的路径仅涉及未观察变量,那么a和b是不可分离的。如果他们之间没有路径或者所有路径都包含可观测变量,那么他们是可分离的。我们认为仅涉及未观察到的变量的路径是“活跃”的,而包括可观察变量的路径称为”非活跃“的
当我们画图时,我们可以用阴影来表示观察到的变量

Alt text
类似的概念也适用于有向模型,只是在有向模型中,这些概念被称为d-分离
分离和d-分只能告诉我们图中隐含的条件独立性,图并不需要表示所有存在的独立性使用完全图来表示任何分布总是合法的。特定环境下的独立指的是取决于网络中的独立性

Alt text

Alt text

在有向模型和无向模型中转换

我们经常将特定的机器学习模型称为无向模型或有向模型。例如,我们通常将受波兹尔曼机称为无向模型,而稀疏编码称为有向模型。
有向模型和无向模型都有其优点和缺点,这两种方法都不是明显优越和普遍优选的。有向模型通常提供了一种高效的从模型抽取样本的直接方法,而无向模型形式通常对于推导近似推断过程是很有用的

Alt text
图模型的又是在于图能包含一些变量不直接相互作用的信息。完全图不是很有用,因为它不包含任何独立性
当我们用图表示概率分布时,我们想要需求选择一个包含尽可能多独立性的图,但是并不会假设任何实际上不存在的独立性。有向模型可以和编码一些无向模型所不能编码的独立性
有向模型能够使用无向模型无法表示的特定类型的子结构,这个子结构被称为不道德。为了将有向模型图D转换为无向模型,需要新建一个图U,对于每对变量x、y,如果存在连接D中的x和y的有向边,或者x和y都是图D的另一个变量z的父节点,则在U中添加x和y的无向边。得到的图称为道德图

Alt text
无向模型可以包括有向模型不能完美表示的子结构,如果U包含长度大于3的环,则有向图D不能捕获无向模型U所包含的所有条件独立性,除非该环包含弦。弦是定义环序列中任意两个非连续变量之间的连接。如果U具有长度为4或更大的环,并且没有弦,我们必须在将他转换为有向模型之前添加弦,添加弦会丢弃U中编码的一些独立信息。通过将弦添加到U形成的图称为弦图或者三角形化图。

Alt text

因子图

因子图是无向模型中抽样的另一种方法,它可以解决标准无向模型语法中图表达的模糊性。因子图是一个包含无向二分图的无向模型的图形表示。一些节点为圆形,这代表随机变量,另一些节点为方形,这对应未归一化函数的因子

Alt text

从图模型采样

有向图模型的一个优点是可以通过一个简单高效的过程从模型所表示的联合分布产生样本,这个过程被称为原始采样。
原始采样是对变量进行拓扑排序,使得所有的i和j,如果i是j的父节点,则i大于i,按顺序进行采样
原始采样仅适用于有向模型,而且并不是每次采样都是条件采样操作。

学习依赖关系

良好的生成模型需要准确的捕获所观察到的或”可见“变量v上的分布,通常v的不同元素彼此高度依赖,在深度学习中常用于建模这些依赖关系的方法是引入几个潜在变量或”隐藏“变量h,然后该模型可以捕获任意对之间的依赖关系
当模型旨在描述直接连接的可见变量之间的依赖关系时,通常不可能连接所有变量,因此设计图模型时需要连接那些紧密相连的变量,并忽略其他变量之间的作用。
使用潜变量而不是自适应结构避免了离散搜索和多轮训练的需要,可见变量和潜变量之间的固定结构可以使用可见单元和隐藏单元之间的作用
潜变量除了发挥本来的作用,即能够高效描述p(v)以外,还具有另外的优势,新变量h还提供了v的代替表示

推断和近似推断

在一个潜变量模型中,我们可能需要提取能够描述可观察变量v的特征E[h|v],望能经常使用最大似然的准则来训练我们的模型

Alt text
所有这些都是推断问题的例子,我们必须预测给定其他变量的情况下一些变量的值,或者在给定其他变量值的情况下预测一些变量的概率分布
深度学习难以实现高效的推断

结构化概率模型的深度学习方法

深度学习不总是涉及特别深的图模型,在图模型中,我们可以根据图模型的图而不是计算图来定义模型深度如果从潜变量hi到可观察变量的最短路径是j,那么我们可以认为潜变量hi的深度为j
深度学习基本上总是利用分布式思想,即使用于深度学习目的的浅层模型,也几乎总是具有单个大的潜变量层
图模型的深度学习方法的一个主要特征是对未知量的较高容忍度,与简化模型知道它的每一个量都可以被精确计算不同的是,我们仅仅直接使用数据运行或则训练,以增强模型的能力

表示学习

表示学习

表示学习

贪心逐层无监督预训练

训练不含注入卷积会循环这类特殊结构的深度监督网络的过程称为无监督训练(贪心逐层无监督训练)。贪心逐层无监督训练依赖于单层表示学习算法(如:RBM、单层自编码器、稀疏编码模型或其他学习潜在表示的模型)。每一层使用无监督学习预训练,将前一层的输出作为输入,输出新的数据表示。这个新的表示的分布有可能是更简单的

Alt text
基于无监督标准的贪心逐层训练过程已被用来规避监督问题中深度神经网络难以联合训练多层的问题。这种贪心学习过程能够为多层联合训练过程找到一个好的初始值

何时以及无监督预训练为何有效

在很多分类任务中,贪心逐层无监督欲寻览能够在测试误差上获得很大提升。
无监督预训练结合了两种不同的想法:
1、利用了深度学习网络对初始参数的选择,可以对模型有着显著正则化效果的想法
2、学习输入分布有助于学习从输入到输出的映射

第一个想法,深度学习网络初始参数的选择对其性能有着很强的正则化效果。标准的神经网络训练过程通常不会到达任何形式的临界点。预训练会初始化模型到一个可能不会到达的位置,例如,在某种区域中的代价函数从一个样本点到另一个样本点变化很大,而小批量只能提供噪声严重的梯度估计,或者某个区域中的H矩阵条件数是病态的,梯度下降必须使用非常小的步长。
第二个想法,学习算法在使用无监督学习的信息在监督学习中使用会表现得更好。其基本想法是对于无监督学习有用的某些特征对于监督学习也是有用的

迁移学习和领域自适应

在迁移学习中,学习器必须执行两个或更多不同的任务。但是我们假设能解释P1变化的许多因素和P2需要抓组的变化相关。这通常能在监督学习中得到解释,输入是相同的,但是输出性质不同。如果P1中具有很多有用的数据,那么这有助于帮我们学习到使得P2抽取少量的数据中快速泛化的表示。假设我们先学习了一组猫的视觉类别,然后我们需要学习狗的视觉类别,那么一些低级别的特征如光照变化、边缘等可以共享,帮助学习狗的视觉类别。
有时候,我们共享的并非输入语义,而是输出的语义。例如在语音识别时,不同的人的发音会有所不同,但表达的句子确实完全一样的。简单的无监督预训练已经成功的用于领域自适应的情感分析

Alt text
一个相关问题是概念漂移,我们可以将其视为一种迁移学习,因为数据分布随时间而逐渐变化。概念漂移和迁移学习都被认为是无监督学习的特例。
上述方法的目标是通过第一个情境下的数据提取对第二种情景中学习时或者直接进行预测时可能有用的信息
迁移学习的两种极端形式是一次学习和零次学习吗,有时也被称为零数据学习。只有一个标注样本的迁移任务被称为一次学习;没有标注样本的迁移任务被称为零次学习
因为第一阶段学习出的表示就可以清楚的分离出潜在的类别,所以一次学习是可能的。
只有在训练时给定额外信息,零数据学习和零次学习是可能的。零次学习场景中包含三个变量:传统输入x,传统输出或目标y,描述任务的变量T。该模型用来估计条件分布P(y|x,T)。零次学习要求T表示为某种形式的泛化。
零次学习是迁移学习的一种特殊形式,同样的原理可以解释如何能执行多模态学习,学习两种模态的表示和一种模态中观察结果x与另一种模态中的观察结果y组成的对(x,y)之间的关系。通过学习三组参数,一个表示中的概念被锚定在另一个表示中,推广的新的对组

Alt text

半监督解释的因果关系

表示学习中的一个重要问题是“什么原因能够使一个表示比另一个好?”,一种假设是理想表示中的特征对应到观测数据的潜在成因,特征空间不同特征或方向对应不同原因,从而表示能够区分这些原因。
对于很多人工智能任务而言,有两个特点:一旦我们能够获得观察结果基本成因的解释,那么将会很容易分析出个体属性。如果向量h表示观察值x的很多潜在因素,并且输出向量y是最为重要的原因之一,那么x预测y会很容易。
无监督学习的另一个思路是选择一个更好的确定哪些潜在因素最为关键的定义。之前,自编码器和生成模型被训练来优化一个类似于均方误差的固定标准,这些标准确定了哪些因素是重要的。例如,图像像素的均方误差隐式的指定,一个潜在因素只有在其显著的改变大量像素亮度时,才是重要影响因素。如果我们希望解决的问题涉及到小对象之间的相互作用,就有可能遇到问题。
还有一些其他的显著性的定义。例如,一组像素具有高度可识别模式,那么即使该模式不涉及到极端的亮度或者暗度,该模式还是会被认为非常显著。实现这样一种定义显著的方法是使用生成式对抗网络

分布式表示

分布式表示的概念(由很多元素组合的表示,这些元素之间可以设置成可分离的)是表示学习最重要的工具之一。分布式表示非常强大,因为他们能用具有k个值的n个特征去描述k^n个不同的概念。
n维二元向量是一个分布式表示的示例,有2^n中,每一种都对应输入空间的一个不同区域。
以下是基于非分布式表示的学习算法示例:
聚类算法,包含k-means算法:每个点恰好分配到一个类别
k-最近邻算法:给定一个输入,一个或几个模板或原型样本与之关联
决策树:给定输入时,只有一个叶节点是被激活的
高斯混合体和专家混合体:模板(聚类中心)或专家关联一个激活程度,和k-最近邻算法一样,每个输入值用多个值表示,但是这些值不能轻易地彼此分开控制
具有高斯核(或其他类似局部核)的核机器:尽管每个支持向量或模板样本的激活程度是连续值,但仍然会出现和高斯混合体相同的问题
将分布式表示和符号表示区分开来的一个重要概念是,由不同概念的共享属性而产生的泛化。分布式表示具有丰富的相似性空间,语义上相接近的在距离上接近,这是纯粹的符号表示所缺少的特点。
我们检查分布式表示学习算法的一个特殊情况,它通过对输出的线性函数进行阈值处理来提取二元特征,该表示中的每个二元特征将R^d分成一半对空间

得益于深度的指数增益

浅层神经网络不能学习复杂的抽象独立因子和图像像素之间的复杂关系。在很多AI任务中,因子几乎彼此独立,但是仍然对应到有意义输入的因素,很可能是高度抽象的,并且和输入呈高度非线性的关系,这需要深度分布式表示,需要很多非线性组合获得较高级的特征(输入函数)或因子(生成原因)
非线性和重用特征层次结构的组合来组织计算,可以使分布式表示获得指数级加速之外,还可以获得统计效率的指数提升。
和-积网络(SPN)是一种概率模型,使用多项式回路计算一组随机变量的概率分布。任意两个有限深度的SPN之间都会存在显著差异,并且一些使SPN易于处理的约束可能会限制其表示能力